FRC 2017 Drive
Java • WPILib • Eclipse • PID • Control Systems
Jan 2017 - Apr 2017

2017 was the first FRC season after I joined my school’s robotics team. I was still in my sophomore year and taking my school’s APCS class, and the FRC team was generally only for juniors and seniors. I was able to join the FRC team since my APCS teacher, Mr. Ferrante, thought I would be a really good fit in robotics due to my enthusiasm and hard work in APCS, and he recommended me to our school’s robotics advisor and mentor, Mr. Williams. Since the season for FTC teams, which are for freshmen and sophomores, had already started, Mr. Williams added me into the FRC team since he trusted Mr. Ferrante’s judgment.

Our FRC team is split into subteams: hardware, software, and electrical. Of course, some people would participate in more than one subteam, but I was pretty sure that I wanted to primarily work in software. Since no one knew me and I was a sudden addition to the team, the software subteam leaders weren’t sure what project to put me in. We had a list of projects and they asked me which ones I was interested in; honestly, I already wanted to join the computer vision and other AI-related projects, but in the end, they decided I should join a less technically intensive project, and I ended up in the Drive team.

In Drive team, I had to learn the code architecture and libraries needed to control the robot: how to specify a control to a joystick, the different drive trains, how to add power to a motor, how to run commands or create subsystems, and various other new concepts. I was introduced to WPILib, which was the library used by FIRST for control systems (motors, gyro sensors, etc.), as well as the SmartDashboard used to drive the robot.

Joystick setup for driving the robots

Before the season started, I was able to write many test scripts, including running a motor by itself and changing its speed. We also took out a robot from an older season and practiced writing drive code for that robot, and I was able to control the robot using my own code. This was honestly one of the most important moments in my CS journey - seeing my code manifest in such an exciting, physically moving object. I realized my code could do so much more than print output on my computer.

Since I was new on the team and didn’t know anyone, I was shy and unsure whether or not to ask for help when I couldn’t figure out something by myself. Over time, I gradually realized that by not asking for help, I was wasting useful time, and I could do so much more if I was just more proactive and tried relying on my teammates. As such, I tried to be more confident, asking more questions, and having more teamwork.

Once the 2017 season started, our team would brainstorm on possible ways we could design our robot, and eventually end up with a final design. We then started working on the new drivetrain for the robot based on the design, including any motors, encoders, and joysticks we would use. We also utilized PID in our drive code, as our robot may easily be bumped into by other robots or hit obstacles on the game field. As such, we spent lots of time adjusting our values for PID to ensure the robot would continue driving in a straight line.

The time taken to finish the code was not that long, though we did continue working on adjustments throughout the competition season. I’d imagine we did a good job; we ended up being a finalist in the Silicon Valley Regional competition, and we even received the Engineering Inspiration Award. Our team moved onto the Turing Division national championships and ended up being a finalist here as well. Although we were so close to winning the competitions, I am proud that our team got so far in the leagues, and I was proud to be a part of our success.

Our drivers and mentor holding our team's awards

©2021 by Julia Shuieh